package com.wenzheng.mybatisplus.service;

import com.baomidou.mybatisplus.core.conditions.*;
import com.baomidou.mybatisplus.core.mapper.*;
import com.baomidou.mybatisplus.core.metadata.*;
import com.wenzheng.mybatisplus.util.*;

import java.util.*;

/**
 * @author tdf
 * @date 2019-09-16 17:05
 **/
public interface BaseBatchService<E> extends BaseMapper<E> {

	/**
	 * 根据分页获取
	 * @param pageModel :查询参数
	 * @return 查询结果
	 */
	PageUtils<E> page(PageModel<E> pageModel);

	/**
	 * 根据判断id是否为空，进行添加或修改
	 * @param entity 数据
	 * @return true/false
	 */
	Boolean merge(E entity);


	/**
	 * 添加
	 * @param entity 数据
	 * @return true/false
	 */
	E save(E entity);

	/**
	 * 修改
	 * @param entity 数据
	 * @return true/false
	 */
	E update(E entity);

	/**
	 * 根据id 删除
	 * @param id 主键
	 * @return true/false
	 */
	Boolean deleteById(String id);

	/**
	 * 批量插入
	 * @param beanList ： list
	 */
	void batchInsert(List<E> beanList);

	/**
	 * 批量更新
	 * @param beanList： list
	 * @param size :批量提交大小
	 */
	void batchInsert(List<E> beanList, int size);

	/**
	 * 批量更新
	 * @param beanList ： list
	 */
	void batchUpdate(List<E> beanList);

	/**
	 * 分页查找
	 */
	PageUtils<E> page(IPage<E> page, Wrapper<E> queryWrapper);

	/**
	 * 分页查找  IPage<T></>
	 */
	PageUtils<E> selectPage(PageModel<E> pageModel);

	/**
	 * 批量更新&插入，有主键时更新，没主键时插入  IPage<T></>
	 */
	void mergeList(List<E> beanList);
}
